import threading
import time

def download(url):
    print(f"开始下载：{url}")
    time.sleep(2)  # 模拟网络下载耗时
    print(f"完成下载：{url}")

urls = ['url1', 'url2', 'url3']

threads = []
for url in urls:
    t = threading.Thread(target=download, args=(url,))
    t.start()
    threads.append(t)

for t in threads:
    t.join()

print("所有下载完成")

"""
Python 有 GIL（全局解释器锁），所以多线程无法利用多核处理器运行多个 CPU 密集任务。
但I/O 等待时能释放 GIL，所以I/O 密集场景下非常有效    
"""
